package com.csi.juegoweb.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.csi.juegoweb.core.domain.Usuario;
import com.csi.juegoweb.domain.Jugador;
import com.csi.juegoweb.service.JugadorService;
import com.csi.juegoweb.service.UsuarioService;
import com.csi.juegoweb.test.TestDammy;
import com.csi.juegoweb.util.ControllerUtil;
import com.csi.juegoweb.util.Mail;
import com.csi.juegoweb.util.MailUtil;

@Controller
@RequestMapping("/jugadores")
public class JugadorController{

	@Autowired
	private JugadorService jugadorService;
	
	@Autowired
	private UsuarioService usuarioService;
	
	@Autowired
	Mail mail;
	
	@RequestMapping(value = "/guardar", method = RequestMethod.POST)
	public ModelAndView saveEvent(@ModelAttribute("jugador") Jugador jugador,
			BindingResult result) {

		ControllerUtil.logBindingErrors(result);
		jugadorService.crear(jugador);
		return new ModelAndView("redirect:/jugadores/listar.html");
		
	}

	@RequestMapping(value = "/listar",method = RequestMethod.GET)
	public ModelAndView viewJugadores() {
		
		Map<String, Object> model = new HashMap<String, Object>();
		model.put("listJugadores", jugadorService.getJugadores());
		return new ModelAndView("VistaJugador", model);
		
	}

	@RequestMapping(value = "/agregar", method = RequestMethod.GET)
	public ModelAndView agregarJugador(@ModelAttribute("jugador") Jugador jugador,
			BindingResult result) {
		return new ModelAndView("AgregarJugador");
	}
	
	@RequestMapping(value = "/listarAmigos", method = RequestMethod.POST)
	public ModelAndView listAmigos(HttpServletRequest request, HttpServletResponse response) throws Exception {
		
			String[] listMail=request.getParameterValues("flagEmail")!=null?
					request.getParameterValues("flagEmail") : new String[0];
			
			
			if (listMail.length>0){
				
					for (String string : listMail) {
						mail.send(string, "Te han enviado una invitacion para Jugar en Pandero", "probando");
					}
								
				return new ModelAndView("HistorialJugador");
			
			}else{
							
				Map<String, Object> model = new HashMap<String, Object>();		
				model.put("listAmigos", usuarioService.getListadoAmigos("66"));
				
				return new ModelAndView("AgregarAmigo",model);
				
			}
			
	}
	
	@RequestMapping(value = "/historialDonacion", method = RequestMethod.POST)
	public ModelAndView historialDonacion() {
		
		Map<String, Object> model = new HashMap<String, Object>();		
		model.put("listHistorialDonaciones", jugadorService.HistorialDonaciones("1"));
		model.put("listHistorialDonantes", jugadorService.HistorialDonantes("1"));
		
		return new ModelAndView("HistorialJugador",model);
	}

}
